/*
DataInputStream也是FilterInputStream的子类，同样采用装饰者模式，最大的不同是它支持基本数据类型的直接读取。
DataOutputStream也是FilterOutputStream的子类，同样采用装饰者模式，最大的不同是它支持基本数据类型的直接写入
DataInputStream 是用来装饰其它输入流，它“允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型”。
应用程序可以使用DataOutputStream(数据输出流)写入由DataInputStream(数据输入流)读取的数据。
 */
package javaio.DataInputOutputStream;

import java.io.*;

public class Main {
    public static void main(String[] args) {
        try(DataInputStream dataInputStream = new DataInputStream(new FileInputStream("test.txt"));
            DataOutputStream dataOutputStream = new DataOutputStream(new FileOutputStream("test.txt"))){
//            dataOutputStream.writeBoolean(false);  //二进制方式写入基本数据类型，非字符，人类不可读
//            System.out.println(dataInputStream.readBoolean()); //直接将数据读取为任意基本数据类型
//            dataOutputStream.writeChars("test");  //二进制方式写入基本数据类型，非字符，人类不可读
//            System.out.println(dataInputStream.read()); //直接将数据读取为任意基本数据类型
            dataOutputStream.writeFloat(1.5F);  //二进制方式写入基本数据类型，非字符，人类不可读
            System.out.println(dataInputStream.readFloat()); //直接将数据读取为任意基本数据类型
        }catch (IOException e){
            e.printStackTrace();
        }
        //注意，写入的是二进制字符串，写入的并不是字符串，使用DataInputStream读取，一般配合使用
    }
}
